import os
#import sys

# 得到当前文件所在目录的绝对路径
basedir = os.path.abspath(os.path.dirname(__file__))


class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
    FLASKY_MAIL_SENDER = '451342295@qq.com'
    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    @staticmethod
    def init_app(app):
        pass


class DevelopmentConfig(Config):
    DEBUG = True
    MAIL_SERVER = 'smtp.qq.com'
    MAIL_PORT = 587
    MAIL_USE_TLS = True
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    # SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URI') or \
    #                           'mysql+mysqlconnector://root:root@127.0.0.1:3318/authbase?charset=utf8&auth_plugin=mysql_native_password'

    DIALCT = "mysql"
    DRIVER = "pymysql"
    USERNAME = "root"
    PASSWORD = "123456"
    HOST = "127.0.0.1"
    PORT = "3306"
    DATABASE = "pachong"
    # SQLALCHEMY_DATABASE_URI = f'{DIALCT}+{DRIVER}://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8&unix_socket="/tmp/mysql.sock"'
    SQLALCHEMY_DATABASE_URI = f'{DIALCT}+{DRIVER}://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8'


class TestingConfig(Config):
    TESTING = False
    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URI') or \
                              'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')


class ProductionConfig(Config):
    DIALCT = "mysql"
    DRIVER = "pymysql"
    USERNAME = "root"
    PASSWORD = "123456"
    HOST = "127.0.0.1"
    PORT = "3306"
    DATABASE = "login_test"
    # SQLALCHEMY_DATABASE_URI = f'{DIALCT}+{DRIVER}://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8&unix_socket="/tmp/mysql.sock"'
    SQLALCHEMY_DATABASE_URI = f'{DIALCT}+{DRIVER}://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?charset=utf8'


config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}

# token过期时间配置(默认一周 604800/测试的时候5分钟)
TOKEN_EXPIRE = 60480000
# 日志开关
DEBUG = True

# SYSTEM_LOG_CONFIG
SYSTEM_LOG_CONFIG = {
    "version": 1,
    "formatters": {
        "base_formatter": {
            "format": "%(asctime)s [%(levelname)s]: %(message)s",
            "datefmt": "%Y-%m-%d %I:%M:%S %p",
        }
    },
    "handlers": {
        "server_log_file": {
            "formatter": "base_formatter",
            "class": "logging.handlers.RotatingFileHandler",
            "filename": "",
            "mode": "a",
            "maxBytes": 0,
            "backupCount": 7,
            "encoding": "utf8",
        },
    },
    "loggers": {
        "server_logger": {
            "level": "INFO",
            "handlers": ["server_log_file"],
            "propagate": "no",
        },
    },
}